// \u4e00-\u9fa5] 中文验证规则
import WxValidat from 'wechat-validate'
Page({
  behaviors: [WxValidat],
  onLoad({ point, building, room, id }) {
    // 获取跳转的id参数，进行页面详情数据的获取
    if (id) return this.getHouseDetail(id)
    this.setData({
      point,
      room,
      building,
    })
  },
  async getHouseDetail(id) {
    // 1、调用接口获取详情数据
    const { code, data } = await wx.http.get('/room/' + id)
    // 2、如果code不满足格式，进行错误提示
    if (!code === 10000) return wx.utils.toast()
    // 3、获取回来的数据，回显页面
    this.setData({ ...data })
  },
  rules: {
    name: [
      { required: true, message: '业主姓名不能为空!' },
      { pattern: /^[\u4e00-\u9fa5]{2,5}$/, message: '业主姓名只能为中文!' },
    ],
    mobile: [
      { required: true, message: '业主手机号不能为空!' },
      { pattern: /^1[3-8]\d{9}$/, message: '请填写正确的手机号!' },
    ],
    idcardFrontUrl: [{ required: true, message: '请上传身份证国徽面!' }],
    idcardBackUrl: [{ required: true, message: '请上传身份证照片面!' }],
  },
  data: {
    idcardFrontUrl: '/static/images/avatar_1.jpg',
    idcardBackUrl: '/static/images/avatar_2.jpg',
    point: '',
    building: '',
    room: '',
    name: '', // 姓名
    gender: '', // 性别
    mobile: '', // 手机号
  },
  goList() {
    wx.reLaunch({
      url: '/house_pkg/pages/list/index',
    })
  },
  // 提交审核
  async submitForm() {
    // 1、校验表单
    if (!this.validate()) return
    // 2、剔除无用的参数
    const { __webviewId__, status, ...data } = this.data
    // console.log(data)
    // 3、获取返回的code
    const { code } = await wx.http.post('/room', data)
    if (code !== 10000) return wx.utils.toast('提交失败')
    // 4、回跳页面
    wx.navigateBack({
      delta: 4,
    })
  },
  removePicture(ev) {
    // 移除图片的类型（身份证正面或反面）
    const type = ev.mark?.type
    this.setData({ [type]: '' })
  },
  async chooseImage(e) {
    // console.log(e)
    // 1、用户选择图片
    const res = await wx.chooseMedia({
      count: 1,
      mediaType: ['image'], // 可以选择的文件类型
      sizeType: ['compressed'], // 选择到的图片进行压缩
    })
    // 2、上传到服务器
    wx.uploadFile({
      filePath: res.tempFiles[0].tempFilePath,
      name: 'file',
      url: wx.http.baseURL + '/upload',
      header: {
        Authorization: 'Bearer ' + getApp().token,
      },
      success: (res) => {
        // console.log(res)
        const { code, data } = JSON.parse(res.data)
        if (code !== 10000) return wx.utils.toast('上传失败')
        // 成功
        this.setData({
          // 通过自定义属性直接存储到data数据里面去
          [e.mark.type]: data.url,
        })
      },
    })
  },
})

// 实现表单校验逻辑
// 1、定义数据
// 2、和表单双向绑定
// 3、引入校验插件,behaviors
// 4、定义校验规则
// 5、点击提交的时候校验表单this.validate()
